Μέχρι σήμερα έχουν κατασκευαστεί αρκετά προγράμματα
προσομοίωσης κοινών αριθμομηχανών (calculators) χρησιμοποιώντας
τις γλώσσες αντικειμενοστραφούς προγραμματισμού. Η γλώσσα
προγραμματισμού Java έχει αναπτυχθεί από την εταιρεία Sun
και είναι μια αντικειμενοστρεφής γλώσσα προγραμματισμού που
δίνει την δυνατότητα κατασκευής προγραμμάτων που μπορούν να
εκτελούνται σε δίκτυα και στο Διαδίκτυο ανεξάρτητα από την
υπολογιστική πλατφόρμα, χρησιμοποιώντας για την εκτέλεση τους
έναν κοινό φυλλομετρητή ιστοσελίδων (browser). Λόγω του γεγονότος
ότι το συγκεκριμένο πρόγραμμα είναι κατασκευασμένο σε γλώσσα
Java δίνει την δυνατότητα για εκτέλεση του προγράμματος σε
τοπικά δίκτυα μέσω ενός κεντρικού υπολογιστή (server) όπως
είναι τα σχολικά εργαστήρια, στο Διαδίκτυο με δημοσίευση του
σε έναν διακομιστή ιστοσελίδων σε θέματα εκπαίδευσης (web
server). Διδακτικά η σημασία του είναι ιδιάζουσα μια που μπορεί
να χρησιμοποιηθεί σαν διδακτικό παράδειγμα στη μελέτη και
εφαρμογή αντικειμενοστρεφών γλωσσών προγραμματισμού όπως είναι
η γλώσσα Java. Επιπλέον ο αλγόριθμος του είναι κατάλληλος
για να δείξει σε ένα μαθητή την λογική που ακολουθεί μια ψηφιακή
αριθμομηχανή για την εκτέλεση μιας σειράς αριθμητικών πράξεων
και πως αυτή μοιάζει ή διαφέρει με την ανθρώπινη λογική.
ΕΙΣΑΓΩΓΗ
Η πρωτοτυπία του προγράμματος έγκειται στο γεγονός ότι όχι
μόνο το interface του απεικονίζει ένα πραγματικό Casio Calculator
αλλά ακόμα οι αριθμοί απεικονίζονται στην οθόνη του σαν κανονικοί
ψηφιακοί αριθμοί.
Ο αλγόριθμός του είναι εύκολο να συμπεριλάβει και άλλες πράξεις
όπως δυνάμεις, ημίτονα κλπ. Οι εικόνες του calculator καθώς
και των ψηφίων χρησιμοποιούνται σαν έτοιμα images από το πρόγραμμα.
ΑΝΑΛΥΣΗ ΛΕΙΤΟΥΡΓΙΑΣ
O αλγόριθμος του προγράμματος είναι ασυνήθιστος και χρησιμοποιεί
και μεθόδους από παλαιότερες εκδόσεις της Java. Ουσιαστικά
αφού πρώτα δέχεται τις εντολές του χρήστη από το ποντίκι,
μεταχειρίζεται τους αριθμούς που αυτός επιλέγει, σαν χαρακτήρες
(String). Όταν είναι να γίνει κάποια πράξη τότε τα ακόλουθα
βήματα συμβαίνουν :
· μετατρέπει τους χαρακτήρες σε αριθμούς,
num1 = num1+(Double.valueOf(display).doubleValue());
· κάνει τις πράξεις,
· επιστρέφει το αποτέλεσμα και το μετατρέπει σε χαρακτήρες
(String),
display=String.valueOf(num1);
· αντιστοιχεί κάθε χαρακτήρα του αποτελέσματος σε εικόνα ανάλογα
με τον αριθμό που αντιπροσωπεύει.
if (display.charAt(i)=='1')
{
posx=posx+pos;
g.drawImage(one,posx,170,this);}
Ακόμα έμφαση έχει δοθεί στον τρόπο με τον οποίο γίνονται οι
πράξεις. Το πρόγραμμα μόλις ο χρήστης επιλέξει μια πράξη,
κρατάει στην μνήμη την επιλογή του χρήστη και κατόπι εκτελεί
την προηγουμένως αποθηκευμένη πράξη. Δηλαδή αν έχουμε την
πράξη,
12+5-3
μόλις ο χρήστης πατήσει το (-) το πρόγραμμα δεν αφαιρεί το
5 αλλά το προσθέτει στο 12, δηλαδή έχει κρατήσει την αμέσως
προηγούμενη πράξη.
switch (op) (Η μεταβλητή op έχει κρατήσει την τελευταία πράξη)
{
case 1:
num1 = num1+(Double.valueOf(display).doubleValue());
break;
case 2:
num1 = num1-(Double.valueOf(display).doubleValue());
break;
case 3:
num1 = num1*(Double.valueOf(display).doubleValue());
break;
case 4:
num1 = num1/(Double.valueOf(display).doubleValue());
break;
}
display=String.valueOf(num1);
op=1; (Η op παίρνει τιμή για την επόμενη πράξη)
num1=0;
flagnum=true;
}
Το πρόγραμμα επίσης χρησιμοποιεί κάποιες Boolean μεταβλητές.
· Flagnum: Λέει στο πρόγραμμα ότι έχει πατηθεί πράξη, οπότε
σε ενδεχόμενη επιλογή αριθμού από το χρήστη, να καθαρίστει
πρώτα η οθόνη.
· Flag: Χρησιμοποιείται για να μην μπορεί να βάλει κανείς
την τελεία των δεκαδικών δεύτερη φορά.
Ακόμα χρησιμοποιούνται κάποιες μεταβλητές για την καλή εμφάνιση
των γραφικών στην οθόνη. Η βιβλιοθήκη java.lang παρέχει τις
απαραίτητες συναρτήσεις ώστε το κομπιουτεράκι να είναι σε
θέση να κάνει πιο σύνθετες πράξεις.
ΕΠΙΛΟΓΟΣ
Φυσικά το πρόγραμμα επιδέχεται βελτιώσεις. Καταρχήν θα μπορούσε
ο κώδικας να σπάσει σε μικρότερες μεθόδους, συναρτήσεις και
να μην γίνονται οι περισσότερες λειτουργίες μέσα στη MouseDown.
Έπειτα υπάρχει η δυνατότητα όταν επανασχεδιάζεται το παράθυρο
να επανασχεδιάζεται μόνο η οθόνη του calculator και όχι όλο
το παράθυρο αφού ουσιαστικά σε αυτό το κομμάτι γίνονται αλλαγές.
Έτσι θα μειωνόταν και το τρεμόπαιγμα στην οθόνη. Στην δεύτερη
έκδοση του προγράμματος θα συμπεριληφθούν αυτές οι αλλαγές.
Στο αρχείο
που ακολουθεί σε μορφή PDF (543 KB), παρατίθεται ο κώδικας
με εξηγήσεις.
|